// package com.learn.aop.aspects;
//
// import org.aspectj.lang.annotation.*;
// import org.springframework.stereotype.Component;
//
// // @Aspect 表示这个类是一个切面类
// @Aspect
// // @Component 注解保证这个切面类能够放入IOC容器
// @Component
// public class LogAspect {
//     // @Before注解：声明当前方法是前置通知方法
//     // value属性：指定切入点表达式，由切入点表达式控制当前通知方法要作用在哪一个目标方法上
//     @Before(value = "execution(public int com.learn.aop.api.Calculator.add(int,int))")
//     public void printLogBeforeCore() {
//         System.out.println("[AOP前置通知] 方法开始了");
//     }
//
//     @AfterReturning(value = "execution(public int com.learn.aop.api.Calculator.add(int,int))")
//     public void printLogAfterSuccess() {
//         System.out.println("[AOP返回通知] 方法成功返回了");
//     }
//     @AfterThrowing(value = "execution(public int com.learn.aop.api.Calculator.add(int,int))")
//     public void printLogAfterException() {
//         System.out.println("[AOP异常通知] 方法抛异常了");
//     }
//
//     @After(value = "execution(public int com.learn.aop.api.Calculator.add(int,int))")
//     public void printLogFinallyEnd() {
//         System.out.println("[AOP后置通知] 方法最终了");
//     }
//
// }
